-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
enable coarse-to-fine training #2984
Conversation
Hi and thanks for your efforts in testing to improve. I've tested with a single high-res dataset (slightly above 4k) but couldn't really confirm better visual results. PSNR is oscillating a lot in this dataset which is why I cannot compare those values. I think it might also depend on how images were taken/are aligned? Could you share some more details about your datasets where you experience improvements? |
Interesting, If I have free time, I will try this implementation and share the result... |
My Experiment: Desolation datasetImages size: 1899x1064 Blue : without coarse to fine training
Red : with coarse to fine training
|
My Second Experiment: Truck datasetImages size: 3904x2176 ((has been enlarged 4 times with Blue : without coarse to fine training
Red : with coarse to fine training
Like @jb-ye being said:
Yes, it seems right. lower resolution (976x544) has higher gaussians than current repo & this PR too. Please see black line |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm!
Following this thread: nerfstudio-project#2984
My Third Experiment: Purancak dataset (Private Dataset)Images size: 2000x1500 Blue : without coarse to fine training
Red : with coarse to fine training
It gives a little bit improvement so far in my third experiment. @jb-ye |
In the original Inria GS code, the coarse-to-fine training was never implemented. This is because the authors didn't observe benefits for training images no greater than 1600 pixels. However, a lot users want to train splatfacto at very high resolutions (e.g. 4k images). I found that when training at high resolutions, it is very likely for the optimization stuck at local minimums (due to various reasons, such as SfM errors, thin structures, aliasing etc.): a lot fine details are not reconstructed properly through densification of gaussians. One counter-intuitive phenomenon is when training at higher resolution, splatfacto actually creates less gaussians.
One way to work around this issue is to re-enable coarse-to-fine training in splatfacto. I found that the default
resolution_schedule=250
is too short to recover fine details. I basically set it to3000
to allow more densifications when training with coarser images. The change also significantly shorten the time to finish the first 6k iterations.I experiment with mip360 dataset's bicycle, garden, and some private datasets, and found the setting can meaningfully improve metrics and also visually when training with images at about 1k resolution or higher. I also want to learn about this setting from other users.